package com.ybear.ybutils.utils.dialog;

import android.content.DialogInterface;

import androidx.annotation.Nullable;
import androidx.annotation.StringRes;

public interface ButtonListener {
    /**
     * 设置确定按钮点击事件监听器
     * @param positiveText  按钮文本内容
     * @param style         按钮样式
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnPositiveListener(@Nullable String positiveText, @Nullable TextStyle style,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeText  按钮文本内容
     * @param style         按钮样式
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnNegativeListener(@Nullable String negativeText, @Nullable TextStyle style,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置确定按钮点击事件监听器
     * @param positiveText  按钮文本内容
     * @param style         按钮样式
     * @return              this
     */
    DialogButton setOnPositiveListener(@Nullable String positiveText, @Nullable TextStyle style);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeText  按钮文本内容
     * @param style         按钮样式
     * @return              this
     */
    DialogButton setOnNegativeListener(@Nullable String negativeText, @Nullable TextStyle style);

    /**
     * 设置确定按钮点击事件监听器
     * @param positiveText   文本资源
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnPositiveListener(@Nullable String positiveText,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeText  按钮文本内容
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnNegativeListener(@Nullable String negativeText,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置确定按钮点击事件监听器
     * @param positiveText   文本资源
     * @return              this
     */
    DialogButton setOnPositiveListener(@Nullable String positiveText);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeText  按钮文本内容
     * @return              this
     */
    DialogButton setOnNegativeListener(@Nullable String negativeText);

    /**
     * 设置确定按钮点击事件监听器
     * @param positiveRes   文本资源
     * @param style         按钮样式
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnPositiveListener(@StringRes int positiveRes, @Nullable TextStyle style,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeRes   文本资源
     * @param style         按钮样式
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnNegativeListener(@StringRes int negativeRes, @Nullable TextStyle style,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置确定按钮点击事件监听器
     * @param positiveRes   文本资源
     * @param style         按钮样式
     * @return              this
     */
    DialogButton setOnPositiveListener(@StringRes int positiveRes, @Nullable TextStyle style);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeRes   文本资源
     * @param style         按钮样式
     * @return              this
     */
    DialogButton setOnNegativeListener(@StringRes int negativeRes, @Nullable TextStyle style);

    /**
     * 设置确定按钮点击事件监听器
     * @param positiveRes   文本资源
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnPositiveListener(@StringRes int positiveRes,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeRes   文本资源
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnNegativeListener(@StringRes int negativeRes,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置确定按钮点击事件监听器
     * @param positiveRes   文本资源
     * @return              this
     */
    DialogButton setOnPositiveListener(@StringRes int positiveRes);

    /**
     * 设置取消按钮点击事件监听器
     * @param negativeRes   文本资源
     * @return              this
     */
    DialogButton setOnNegativeListener(@StringRes int negativeRes);

    /**
     * 设置确定按钮点击事件监听器
     * @param style         按钮样式
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnPositiveListener(@Nullable TextStyle style,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置取消按钮点击事件监听器
     * @param style         按钮样式
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnNegativeListener(@Nullable TextStyle style,
                                       @Nullable DialogInterface.OnClickListener l);

    /**
     * 设置确定按钮点击事件监听器
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnPositiveListener(@Nullable DialogInterface.OnClickListener l);

    /**
     * 设置取消按钮点击事件监听器
     * @param l             事件监听器
     * @return              this
     */
    DialogButton setOnNegativeListener(@Nullable DialogInterface.OnClickListener l);
}
